package com.itheima.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.mapper.PmsProductAttributeCategoryMapper;
import com.itheima.mapper.PmsProductAttributeMapper;
import com.itheima.mapper.SmsFlashPromotionMapper;
import com.itheima.pojo.PmsBrand;
import com.itheima.pojo.PmsProductAttribute;
import com.itheima.pojo.PmsProductAttributeCategory;
import com.itheima.pojo.PmsProductCategory;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;

import java.util.List;

@DubboService
public class PmsProductAttributeCategoryImpl implements PmsProductAttributeCategoryApi{
    @Autowired
    private PmsProductAttributeCategoryMapper pmsProductAttributeCategoryMapper;
    @Autowired
    private PmsProductAttributeMapper pmsProductAttributeMapper;

    /**
     * 添加商品属性分类
     * @param pmsProductAttributeCategory
     */
    @Override
    public Boolean create(PmsProductAttributeCategory pmsProductAttributeCategory) {
        //先进行查询 类型名称是否重复
        LambdaQueryWrapper<PmsProductAttributeCategory> wrapper=new LambdaQueryWrapper<>();
        wrapper.eq(PmsProductAttributeCategory::getName,pmsProductAttributeCategory.getName());
        PmsProductAttributeCategory pmsBrand1 = pmsProductAttributeCategoryMapper.selectOne(wrapper);
        //如果存在 则重复 返回 FALSE
        if(!ObjectUtils.isEmpty(pmsBrand1)){
            return false;
        }
        //走新增
        pmsProductAttributeCategoryMapper.insert(pmsProductAttributeCategory);
        return true;

    }

    /**
     * 删除
     * @param id
     */
    @Override
    public void delete(Integer id) {
        pmsProductAttributeCategoryMapper.deleteById(id);
        LambdaQueryWrapper<PmsProductAttribute> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(PmsProductAttribute::getProductAttributeCategoryId,id)
                .eq(PmsProductAttribute::getType,0);
        pmsProductAttributeMapper.delete(wrapper);
    }

    /**
     * 分页
     * @param pageNum
     * @param pageSize
     * @return
     */
    @Override
    public IPage<PmsProductAttributeCategory> list(Integer pageNum, Integer pageSize) {
        IPage<PmsProductAttributeCategory> page = new Page<>(pageNum,pageSize);
        LambdaQueryWrapper<PmsProductAttributeCategory> wrapper = new LambdaQueryWrapper<>();
        return pmsProductAttributeCategoryMapper.selectPage(page,wrapper);
    }

    /**
     * 修改
     * @param id
     * @param pmsProductAttributeCategory
     */
    @Override
    public void update(Integer id, PmsProductAttributeCategory pmsProductAttributeCategory) {
        LambdaQueryWrapper<PmsProductAttributeCategory> lqw = new LambdaQueryWrapper<>();
        lqw.eq(PmsProductAttributeCategory::getId, id);
        pmsProductAttributeCategoryMapper.update(pmsProductAttributeCategory,lqw);
    }

    /**
     * 查询单个
     * @param id
     * @return
     */
    @Override
    public PmsProductAttributeCategory findById(Integer id) {
        PmsProductAttributeCategory pmsProductAttributeCategory = pmsProductAttributeCategoryMapper.selectById(id);
        return pmsProductAttributeCategory;
    }

    /**
     * 查询所有
     * @return
     */
    @Override
    public List<PmsProductAttributeCategory> findAll() {
        List<PmsProductAttributeCategory> categories =
                pmsProductAttributeCategoryMapper.selectList(new LambdaQueryWrapper<PmsProductAttributeCategory>().ne(PmsProductAttributeCategory::getId, 0));
        return categories;
    }
    /**
     * 查询下级属性
     * @param id
     * @return
     */
    @Override
    public List<PmsProductAttribute> findId(Integer id) {
        List<PmsProductAttribute> categories =
                 pmsProductAttributeMapper.selectList(new LambdaQueryWrapper<PmsProductAttribute>().eq(PmsProductAttribute::getProductAttributeCategoryId, id));
        return categories;
    }





}
